package day02;
//数据类型的演示
//Data--数据，Type---类型
public class DataTypeDemo {
    public static void main(String[] args) {
        /**
         //1)int:整形，4个字节，-21个多亿到21个多亿
         int a=250;//250为整数直接量，默认为int类型
         //        int b=1000000000000000;//编译错误100多个亿默认为int类型，但是超出范围
         //        int c=25.678;//编译错误，整形变量中只能装整型

         System.out.println(5/2);//2
         System.out.println(2/5);//0
         System.out.println(5/2.0);//2.5

         int d=2147483647;//int的最大值
         d=d+1;
         System.out.println(d);//-2147483648,发生溢出了  */

        /**
        //2)long:长整形，8个字节，-900万多万多个亿到900万万亿多
        long a =25L;//25L为长整形的直接量
        //long b=10000000000;//编译错误，100亿默认为int类型，但超出int类型的直接量
        long c=100000000000L;//100亿L为长整形的直接量
        long d=365L*24*60*60*1000;//去年一年所经历的毫秒书
        System.out.println(d);//31536000000

        long e=1000000000*2*10L;
        System.out.println(e);//20000000000
        long f=1000000000*3*10L;//前面两个数都是int类型，两数相乘发生溢出
        System.out.println(f);//-12949672960
        long g=1000000000L*3*10L;
        System.out.println(g);//30000000000
         */

        /**
        //3)doulble:浮点型，8个字节，很大很大很大
        double a=25.678;//25.678为小数直接量，默认为double类型
        float b=25.678F;//26.678F为float直接量

        double c=2.0,d=1.9;
        System.out.println(c-d);//0.10000000000000009----往上飘
        double q=6,h=1.9;
        System.out.println(q-h);//4.1-----正确值
        double r=3,n=2.1;
        System.out.println(r-n);//0.8999999999999999------往下飘
 */

        /**
        //4)boolean:布尔型，1个字节
        boolean a=true;//true为boolean直接量
        boolean b=false;//false为boolean直接量
        //boolean c=25.6;//编译错误，Boolean只能存储true或false
         */

        /**
        //5)char:字符型，两个字节
        char a='迪';
        char b='伽';
        char c='6';
        char d=' ';
//        char a1=女;//编译错误，字符直接量必须放在单引号中
//        char a2='';//编译错误，必须有字符
//        char a3='10';//编译错误，只能装一个字符

        char a5=65;//0到65535之间
        System.out.println(a5);//'A'，println()时会依据c5的类型来做输出
                               //若a5为int类型，则以数字形式展示
                               //若a5为char类型，则以字符形式展示
        char a9='\\';
        System.out.println(a9);// ---\
        char a6='\'';
        System.out.println(a6);//-----'
        for(char i=0;i<=65535;i++){
            System.out.println(i);
        }
         */

        /**
        //类型时间的转换：
         *自动转换：由大类型到小类型自动转换
         *强制转换：有小类型到大类型强制转换
           * 语法：(要转换成为的类型)变量
           * 注意：强转有可能发生溢出或丢失精度
        double a1=6;//自动转
        int c1=(int)a1;//强制转
        System.out.println(a1);

        int a=5;
        long b=a;//自动/隐式类型转换
        int c=(int)b;//强制转换

        long d=5;
        double e=5;
        System.out.println(e);

        long f=100000000000L;
        int g=(int)f;
        System.out.println(g);//1215752192,强制转有可能发生溢出

        double h=25.978;
        int i=(int)h;
        System.out.println(i);//25,强制转有可能丢失精度
         */

        //类型时间的转换：
        byte b1=5;
        byte b2=6;
        byte b3=(byte) (b1+b2);
        System.out.println('2');//2,没有发生运算
        System.out.println('2'+'2');//100，发生运算，'2'的码50，加上'2'的码50
        System.out.println('2'+2);//52，'2’的码50+2
        System.out.println(2+2);//4 直接计算

        int a='我';//看字符对应的码
        char b=65;//看码对应的字符
        System.out.println(a);//25105
        System.out.println(b);//A

        System.out.println('5'+'2');//发生运算'5'的码加上’2‘的码的值
        int a1='5',a2='2';//查看字符对应的码
        System.out.println(a1);//53
        System.out.println(a2);//50

        char c1=65,c2=99;//查看码对应的字符
        System.out.println(c1);//A
        System.out.println(c2);//c













    }
}
